iT邦幫忙

2023 iThome 鐵人賽

DAY 8
0

Info

Walkthrough

  • 存取網頁後使用帳號和上關獲取的密碼登入,看到有 HomeAbout 兩個超連結
    • Imgur
  • 右鍵選擇 View Page SourceCtrl + U 來檢視網頁原始碼,發現有提示密碼路徑 (同 Day 0x01 Intro & Natas Level 0 所述)
    • Imgur
  • 分別點擊 HomeAbout 超連結,發現上方 URL 會隨之改變,例如 ?page=home
    • Imgur
    • Imgur
  • 嘗試將 ?page= 後的字串刪除並發送,結果網頁顯示錯誤訊息,得知以下兩點資訊
    1. 有使用 include() 函式
    2. 網頁實際路徑 /var/www/natas/natas7/index.php
    • Imgur
  • 存取密碼檔案 ?page=/etc/natas_webpass/natas8 獲得下題的登入密碼;根據錯誤訊息得知的資訊,也可改用相對路徑 ../ 回到系統根目錄
    • Imgur
    • Imgur

Note

  • 允許透過使用者未經驗證的輸入來動態引入檔案,而根據引入檔案對於網站是本地或遠端,又分成 Local File InclusionRemote File Inclusion 兩種
    • E.g., /?page=/etc/passwd/?page=http://google.com
  • 因為此關帳號是 natas7,所以可存取 ?page=/etc/natas_webpass/natas7,但 natas9 就會有錯誤訊息顯示 Permission denied
    • Imgur
    • Imgur
  • 常見測試 LFI (Local File Inclusion) 的路徑為 /etc/passwd,因為 Linux 系統中幾乎必定存在,且基本上一般使用者皆可讀取,檔案內容的格式可參考 Understanding /etc/passwd File Format
    • Imgur
  • 另外也可搭配 PHP 的偽協議取得任意檔案,再透過 CyberChef 等方式解碼,即可了解後端邏輯
    1. ?page=php://filter/convert.base64-encode/resource=/etc/passwd (絕對路徑)
    2. ?page=php://filter/convert.base64-encode/resource=index.php (相對路徑)
    <?
        if(array_key_exists("page", $_GET)) {
            include($_GET["page"]);
        }
    ?>
    
    • Imgur
  • 可建立白名單限制使用者輸入,避免引入非預期的檔案,如果確定不需要引入功能,PHP 可透過 allow_url_fopen=Offallow_url_include=Off 來禁用外部檔案引入

Summary

Reference


上一篇
Day 0x07 Natas Level 5 → Level 6
下一篇
Day 0x09 Natas Level 7 → Level 8
系列文
Natas 網頁安全:從入門到放棄35
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言